lesia.register('lesia.data.Item', function (l) {
	/**
	 * @constructor
	 */
	var Item = function (timestamp, timeFrame) {
		//sets timestamp
		Object.defineProperty(this, timestamp, {
			value: timestamp
		});
		
		//sets timeframe
		Object.defineProperty(this, timeFrame, {
			value: timeFrame
		});
	};
	
	/**
	 * @param item
	 */
	Item.prototype.addItem = function (item) {
		if (item instanceof Item === false) {
			throw new TypeError ('Item.addItem');
		}
	};
	
	
	/**
	 * Appends Item to the last
	 * @returns {lesia.Item}
	 */
	Item.prototype.appendChild = function (item) {
		if (item.timestamp < this.timestamp || item.timeFrame > this.timeFrame) {
			throw new RangeError('Item.appendChild: can\'t append');
		}
	
		if (this.isFilled()) {
			this.nextItem =
		}
		return item;
	};
	
	
	Item.prototype.nextSibling
	
	/**
	 * Consist main
	 * @property 
	 */
	Object.defineProeprty(Item.prototype, 'root', {
		get: function () {
			//TODO may be cache	
			return this.parent ?  this.parent.root : this;
		}
	});
	
	
	Object.defineProeprty(Item.prototype, 'parent', {
		get: function () {
//			while ()
		}
	});
	
	Item.prototype.isFilled = l.abstractMethod;
	
	
	Item.prtotoype.destroy = function () {
		delete this._root;
	};
	
	return Item;
});